﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using SilenthinkContract.Domain;

namespace SilenthinkContract
{
    [ServiceContract(Namespace = ServiceContract.Namespace)]
    public interface IExtraService : IService
    {
        
        #region RegisterLog
        [OperationContract]
        bool CreateRegisterLog(RegisterLog o);
        [OperationContract]
        RegisterLog GetRegisterLog(Guid id);
        #endregion

        #region EmailVerification
        [OperationContract]
        bool CreateEmailVerification(EmailVerification o);
        [OperationContract]
        bool DeleteEmailVerification(Guid id);
        [OperationContract]
        EmailVerification GetEmailVerification(string authCode, int? category = null, long? userId = null);
        [OperationContract]
        PageList<EmailVerification> GetPagedEmailVerification(int index = 1, int size = 20, string email = null, int? category = null, DateTime? beginDate = null, DateTime? endDate = null);
        #endregion

        #region SmsVerification
        [OperationContract]
        bool CreateSmsVerification(SmsVerification o);
        [OperationContract]
        bool DeleteSmsVerification(Guid id);
        [OperationContract]
        SmsVerification GetSmsVerification(string smsCode, string mobile, int? category = null, long? userId = null);
        [OperationContract]
        PageList<SmsVerification> GetPagedSmsVerification(int index = 1, int size = 20, string smsCode = null, long? userId = null, int? category = null, DateTime? beginDate = null, DateTime? endDate = null);
        #endregion

    }
}